# ferreus_orbit Plugins for Lenovo "ThinkSystem SR665"

fo_load_storcli

fo_get_sorted_name(){
  local id=$(fo_get_did)
  if [ "$USE_FO_NAME" -lt 1 ]; then
    echo sd$(fo_get_dev_letter ${id})
  else
    echo "Disk${id}"
  fi
}

fo_get_did(){
  local host=$(echo $DEVPATH | cut -d/ -f6)
  if [ "${host}" == "host0" ];then
    local slot=$(echo "$DEVPATH" | cut -d/ -f8| cut -d: -f3)
    if fo_check_raid; then
      local dg=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[][]|select(.[\"Connected Port Number\"]?==\"${slot}(path0) \").\"Drive position\""|cut -d, -f1|cut -d: -f2)
      id=$(cat ${FO_CACHE_FILE_STORCLI}|jq -r ".[]|to_entries[]|select(.key==0).value|select(.DG==${dg}).DID")
    else
      case $slot in
      2[4-7])
        let "id = slot - 10"
        ;;
      9[6-9]|10[0-9]|11[0-1])
        let "id = slot - 94"
        ;;
      *)
        let "id = slot + 2"
      esac
    fi
  else
    local ata=$(echo "${host}" |awk -F'ata' '{print $2}')
    let "id = $ata - 1"
  fi
  echo $id
}

fo_check_raid(){
  [ "$(echo $ID_MODEL|cut -d_ -f1)" == "RAID" ] && return 0 || return 1
}

fo_build_dispo(){
  if [ "$USE_FO_NAME" -ne 1 ]; then
    for i in $(seq 2 17);do
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{Disk${i}}/{sd$(fo_get_dev_letter ${i})}/g")
      FO_DISPOSITION=$(printf "${FO_DISPOSITION}"|sed "s/{SN_Disk${i}}/{SN_sd$(fo_get_dev_letter ${i})}/g")
    done
  fi
}

FO_DISPOSITION="""
HDD disposition (Front Panel)
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk2}|{Disk5}|{Disk8}|{Disk11}|
|{SN_Disk2}|{SN_Disk5}|{SN_Disk8}|{SN_Disk11}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk3}|{Disk6}|{Disk9}|{Disk12}|
|{SN_Disk3}|{SN_Disk6}|{SN_Disk9}|{SN_Disk12}|
|-{MINUS}-|-{MINUS}-|-{MINUS}-|-{MINUS}-|
|{Disk4}|{Disk7}|{Disk10}|{Disk13}|
|{SN_Disk4}|{SN_Disk7}|{SN_Disk10}|{SN_Disk13}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯

HDD disposition (Rear Panel):
__{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}___{UNDERSCORE}__
|{Disk14}|{Disk15}|{Disk16}|{Disk17}|
|{SN_Disk14}|{SN_Disk15}|{SN_Disk16}|{SN_Disk17}|
¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯¯{HIGHER}¯¯
"""
 
